package com.roy.giftools;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.bumptech.glide.Glide;
import com.roy.giftools.utils.ImageConverter;
import com.yuyh.library.imgsel.ImageLoader;
import com.yuyh.library.imgsel.ImgSelActivity;
import com.yuyh.library.imgsel.ImgSelConfig;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private String gifPath, gifName;
    private List<String> pathList;

    private static final int REQUEST_PIC2GIF_CODE = 0;
    private static final int REQUEST_GIF2PIC_CODE = 1;

    private ImageConverter imageConverter = new ImageConverter();

    // 自定义图片加载器
    private ImageLoader loader = new ImageLoader() {
        @Override
        public void displayImage(Context context, String path, ImageView imageView) {
            Glide.with(context).load(path).into(imageView);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        LinearLayout pic2gif_LL = (LinearLayout) findViewById(R.id.pic2gif);
        LinearLayout gif2pic_LL = (LinearLayout) findViewById(R.id.gif2pic);
        LinearLayout video2gif_LL = (LinearLayout) findViewById(R.id.video2gif);

        pic2gif_LL.setOnClickListener(this);
        gif2pic_LL.setOnClickListener(this);
        video2gif_LL.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.pic2gif:
                // 自由配置选项
                ImgSelConfig config = new ImgSelConfig.Builder(this, loader)
                        // 是否多选, 默认true
                        .multiSelect(true)
                        // 是否记住上次选中记录, 仅当multiSelect为true的时候配置，默认为true
                        .rememberSelected(false)
                        // “确定”按钮背景色
                        .btnBgColor(Color.parseColor("#303F9F"))
                        // “确定”按钮文字颜色
                        .btnTextColor(Color.WHITE)
                        // 使用沉浸式状态栏
                        .statusBarColor(Color.parseColor("#3F51B5"))
                        // 返回图标ResId
                        .backResId(R.drawable.ic_arrow_back_black_24dp)
                        // 标题
                        .title("选择图片")
                        // 标题文字颜色
                        .titleColor(Color.WHITE)
                        // TitleBar背景色
                        .titleBgColor(Color.parseColor("#3F51B5"))
                        // 裁剪大小。needCrop为true的时候配置
                        .cropSize(1, 1, 200, 200)
                        .needCrop(false)
                        // 第一个是否显示相机，默认true
                        .needCamera(false)
                        // 最大选择图片数量，默认9
                        .maxNum(50)
                        .build();
                // 跳转到图片选择器
                ImgSelActivity.startActivity(this, config, REQUEST_PIC2GIF_CODE);
                break;
            case R.id.gif2pic:
                // 自由配置选项
                config = new ImgSelConfig.Builder(this, loader)
                        // 是否多选, 默认true
                        .multiSelect(false)
                        // 是否记住上次选中记录, 仅当multiSelect为true的时候配置，默认为true
                        .rememberSelected(false)
                        // “确定”按钮背景色
                        .btnBgColor(Color.parseColor("#303F9F"))
                        // “确定”按钮文字颜色
                        .btnTextColor(Color.WHITE)
                        // 使用沉浸式状态栏
                        .statusBarColor(Color.parseColor("#3F51B5"))
                        // 返回图标ResId
                        .backResId(R.drawable.ic_arrow_back_black_24dp)
                        // 标题
                        .title("选择GIF")
                        // 标题文字颜色
                        .titleColor(Color.WHITE)
                        // TitleBar背景色
                        .titleBgColor(Color.parseColor("#3F51B5"))
                        // 裁剪大小。needCrop为true的时候配置
                        .cropSize(1, 1, 200, 200)
                        .needCrop(false)
                        // 第一个是否显示相机，默认true
                        .needCamera(false)
                        // 最大选择图片数量，默认9
                        .maxNum(50)
                        .build();
                // 跳转到图片选择器
                ImgSelActivity.startActivity(this, config, REQUEST_GIF2PIC_CODE);
                break;
            case R.id.video2gif:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 选择结果回调
        if (resultCode == RESULT_OK && data != null) {
            pathList = data.getStringArrayListExtra(ImgSelActivity.INTENT_RESULT);
            for (String path : pathList) {
                Log.i("PicPath", path);
            }
            if (requestCode == REQUEST_PIC2GIF_CODE){
                gifName = imageConverter.stringToMD5(pathList.get(0));
                // 费时操作应放入子线程
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        gifPath = imageConverter.pic2gif(pathList, gifName, 200, 5);
                        Log.i("Tag", "default GIF has been created.");
                        Bundle bundle = new Bundle();
                        bundle.putStringArrayList("pathList", (ArrayList<String>) pathList);
                        bundle.putString("gifPath", gifPath);
                        Intent intent = new Intent(MainActivity.this, Pic2GifActivity.class);
                        intent.putExtras(bundle);
                        startActivity(intent);
                    }
                }).start();
                //TODO Pic2GifActivity增加调整参数功能
            }
            if (requestCode == REQUEST_GIF2PIC_CODE) {
                //TODO 增加Activity用于拆分GIF
            }
        }
    }

}
